package com.neuedu.service.impl;

import com.alibaba.fastjson.JSONObject;
import com.neuedu.common.JSONData;
import com.neuedu.dao.ProductSKUMapper;
import com.neuedu.dao.SpecsMapper;
import com.neuedu.pojo.ProductSKU;
import com.neuedu.pojo.Specs;
import com.neuedu.pojo.SpecsVal;
import com.neuedu.service.ProductSKUService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Service(value = "productSKUService")
public class ProductSKUServiceImpl implements ProductSKUService {
    @Autowired
    private ProductSKUMapper productSKUMapper;
    @Autowired
    private SpecsMapper specsMapper;

    public JSONData<String> addProductSKU(ProductSKU productSKU) {
        JSONObject json = new JSONObject();
        //-规格信息：skuinfo json字段存储的内容
        List<SpecsVal> specsVals = productSKU.getSpecsVals();
        for(SpecsVal specsVal:specsVals){
            //-通过规格id，获取规格名称简写，用来做json的存储
            Specs specs = specsMapper.selectByPrimaryKey(specsVal.getSpecsId());
            //put(规格id，规格值id)
            json.put(specs.getNameabbr(),specsVal.getName());
        }
        //-将存储 规格信息的 JSON对象转换为json字符串存储到数据库的skuinfo字段
        productSKU.setSkuinfo(json.toJSONString());
        // mapper 接口的调用
        int num = productSKUMapper.insert(productSKU);
        if(num>0){
            return JSONData.buildSuccess("商品SKU添加成功");
        }
        return JSONData.buildError("商品SKU添加失败");
    }

    public JSONData<List<ProductSKU>> queryProductSKUBySpecs(ProductSKU productSKU) {
        //->查询信息：主要根据：商品id、规格信息（color、arm 等）
        //-组成传递给mapper接口的数据对象：Map
        Map<String,Object> map = new HashMap<String, Object>();
        //-1、商品id
        map.put("productId",productSKU.getProductId());
        List<SpecsVal> specsVals = productSKU.getSpecsVals();
        //-2、规格信息：
        for(SpecsVal specsVal:specsVals){
            //-通过规格id，获取规格名称简写，用来做json的存储
            Specs specs = specsMapper.selectByPrimaryKey(specsVal.getSpecsId());
            //put(规格别名，规格值内容)
            map.put(specs.getNameabbr(),specsVal.getName());
        }
        //-将map集合传递给  mapper=》组装sql语句
        List<ProductSKU> data = productSKUMapper.selProductSKUByMap(map);
        if(data==null){
            return JSONData.buildError("没有对应的信息");
        }
        return JSONData.buildSuccess(data);
    }
}
